package frontera;

import java.awt.BorderLayout;



import java.awt.EventQueue;
import Control.FuncionesPotencia;
import Entidad.NumerosIngresados;
import Control.OperacionesBasicas;
import Control.FuncionesTrigonometricas;



import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.TextField;
import java.awt.Button;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;

public class Interfazcalculadora extends JFrame {
	 float Resultado, num1,num2;

	    private NumerosIngresados numero1 = new NumerosIngresados(0);
	    private NumerosIngresados numero2 = new NumerosIngresados(0);
	    private OperacionesBasicas sumo = new OperacionesBasicas();
	    private FuncionesPotencia potencio = new FuncionesPotencia();
	    private FuncionesTrigonometricas trigo = new FuncionesTrigonometricas();
	    String temp;
	    char     operador;

	private JTextField TFDisplay;
	private final Action action = new SwingAction();

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Interfazcalculadora frame = new Interfazcalculadora();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Interfazcalculadora() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 285, 429);
		getContentPane().setLayout(null);
		
		TFDisplay = new JTextField();
		TFDisplay.setBounds(10, 11, 242, 33);
		getContentPane().add(TFDisplay);
		TFDisplay.setColumns(10);
		
		JButton button = new JButton("1");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				MostrarEnPantalla("1");
			}
		});
		button.setBounds(10, 63, 55, 48);
		getContentPane().add(button);
		
		JButton button_1 = new JButton("2");
		button_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				MostrarEnPantalla("2");
			}
		});
		button_1.setBounds(75, 63, 55, 48);
		getContentPane().add(button_1);
		
		JButton button_2 = new JButton("3");
		button_2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				MostrarEnPantalla("3");
			}
		});
		button_2.setBounds(140, 63, 55, 48);
		getContentPane().add(button_2);
		
		JButton suma = new JButton("+");
		suma.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			
				operador = '+';
		        numero1.setNumero(Float.parseFloat(TFDisplay.getText()));
		        TFDisplay.setText(" ");
			}
		});
		
		suma.setBounds(204, 63, 55, 48);
		getContentPane().add(suma);
		
		JButton button_4 = new JButton("4");
		button_4.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				MostrarEnPantalla("4");
			}
		});
		button_4.setBounds(10, 118, 55, 48);
		getContentPane().add(button_4);
		
		JButton button_5 = new JButton("5");
		button_5.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				MostrarEnPantalla("5");
			}
		});
		button_5.setBounds(75, 118, 55, 48);
		getContentPane().add(button_5);
		
		JButton button_6 = new JButton("6");
		button_6.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				MostrarEnPantalla("6");
			}
		});
		button_6.setBounds(140, 118, 55, 48);
		getContentPane().add(button_6);
		
		JButton menos = new JButton("-");
		menos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			
				operador = '-';
		        numero1.setNumero(Float.parseFloat(TFDisplay.getText()));
		        TFDisplay.setText(" ");
			}
		});
		menos.setBounds(204, 118, 55, 48);
		getContentPane().add(menos);
		
		JButton button_8 = new JButton("7");
		button_8.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				MostrarEnPantalla("7");
			}
		});
		button_8.setBounds(10, 173, 55, 48);
		getContentPane().add(button_8);
		
		JButton button_9 = new JButton("8");
		button_9.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				MostrarEnPantalla("8");
			}
		});
		button_9.setBounds(75, 173, 55, 48);
		getContentPane().add(button_9);
		
		JButton button_10 = new JButton("9");
		button_10.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				MostrarEnPantalla("9");
			}
		});
		button_10.setBounds(140, 173, 55, 48);
		getContentPane().add(button_10);
		
		JButton multiplicacion = new JButton("*");
		multiplicacion.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				operador = '*';
		        numero1.setNumero(Float.parseFloat(TFDisplay.getText()));
		        TFDisplay.setText(" ");
				
			}
		});
		///
		multiplicacion.setBounds(204, 173, 55, 48);
		getContentPane().add(multiplicacion);
		
		JButton button_12 = new JButton(".");
		button_12.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				MostrarEnPantalla(".");
			}
		});
		button_12.setBounds(10, 229, 55, 48);
		getContentPane().add(button_12);
		
		JButton button_13 = new JButton("0");
		button_13.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				MostrarEnPantalla("0");
			}
		});
		button_13.setBounds(75, 229, 55, 48);
		getContentPane().add(button_13);
		
		JButton division = new JButton("/");
		division.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				operador = '/';
		        numero1.setNumero(Float.parseFloat(TFDisplay.getText()));
		        TFDisplay.setText(" ");
				
			}
		});
		
		division.setBounds(204, 229, 55, 48);
		getContentPane().add(division);
		
		JButton igual = new JButton("=");
		igual.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				
				numero2.setNumero(Float.parseFloat(TFDisplay.getText()));



				TFDisplay.setText(" ");
		        switch(operador){
		            case '+':
		                Resultado = sumo.Sumar(numero1, numero2);
		                TFDisplay.setText(String.valueOf(Resultado));
		                break;
		            case '-':
		                Resultado = sumo.Restar(numero1, numero2);
		                TFDisplay.setText(String.valueOf(Resultado));
		                break;
		            case '*':
		                Resultado = sumo.Multiplicar(numero1, numero2);
		                TFDisplay.setText(String.valueOf(Resultado));
		                break;
		            case '/':
		                if(numero2.getNumero() == 0){
		                	TFDisplay.setText("error");
		                    break;
		                }                
		                    Resultado = sumo.Dividir(numero1, numero2);
		                    TFDisplay.setText(String.valueOf(Resultado));
		                    break;
		            case '^':
		                Resultado = potencio.Potenciacion(numero1, numero2);
		                TFDisplay.setText(String.valueOf(Resultado));
		                break;


		        }
				
			}
		});
		igual.setBounds(10, 343, 120, 38);
		getContentPane().add(igual);
		
		JButton sin = new JButton("sen");
		sin.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				 numero1.setNumero(Float.parseFloat(TFDisplay.getText()));
			        TFDisplay.setText(" ");
			        Resultado = trigo.seno(numero1);
			        TFDisplay.setText(String.valueOf(Resultado));
			}
		});
		sin.setBounds(10, 284, 55, 48);
		getContentPane().add(sin);
		
		JButton coseno = new JButton("cos");
		coseno.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				numero1.setNumero(Float.parseFloat(TFDisplay.getText()));
		        TFDisplay.setText(" ");
		        Resultado = trigo.coseno(numero1);
		        TFDisplay.setText(String.valueOf(Resultado));
			
			}
		});
		coseno.setBounds(75, 284, 55, 48);
		getContentPane().add(coseno);
		
		JButton exponencial = new JButton("^");
		exponencial.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			
				 operador = '^';
			        numero1.setNumero(Float.parseFloat(TFDisplay.getText()));
			        TFDisplay.setText(" ");
			}
		});
		exponencial.setBounds(140, 284, 55, 48);
		getContentPane().add(exponencial);
		
		JButton logaritmo = new JButton("log");
		logaritmo.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
			
				numero1.setNumero(Float.parseFloat(TFDisplay.getText()));
				TFDisplay.setText(" ");
		        if(numero1.getNumero() <= 0){
		        	TFDisplay.setText("error");            
		        }
		        Resultado = potencio.Logaritmo(numero1);
		        TFDisplay.setText(String.valueOf(Resultado));
			}
		});
		logaritmo.setBounds(204, 284, 55, 48);
		getContentPane().add(logaritmo);
		
		JButton borrar = new JButton("clear");
		borrar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				TFDisplay.setText(" ");
			}
		});
		borrar.setBounds(140, 343, 120, 38);
		getContentPane().add(borrar);
	}
	private class SwingAction extends AbstractAction {
		public SwingAction() {
			putValue(NAME, "SwingAction");
			putValue(SHORT_DESCRIPTION, "Some short description");
		}
		public void actionPerformed(ActionEvent e) {
		}
	}
	private void MostrarEnPantalla(String numero){
        temp = TFDisplay.getText();
        temp = temp + numero;
        TFDisplay.setText(temp);
    }
}
